﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Libreria.SICOM.Negocio;
using Libreria.SICOM.Modelo;
using System.Configuration;
using Web.SICOM.Models;

namespace Web.SICOM.Controllers
{
    public class MapaController : Controller
    {
        //
        // GET: /Mapa/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Variables()
        {

            VariableNegocio varbo = new VariableNegocio();
            List<Variable> vars = varbo.consultarVariables(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            List<SelectListItem> variables = new List<SelectListItem>();

            foreach (Variable var in vars)
            {
                variables.Add(new SelectListItem() { Selected = false, Text = var.Nombre, Value = var.Identificador.ToString() });
            }
            ViewData.Model = variables;
            return View();
        }

        public ActionResult equipomedicion()
        {

            EquipodeMedicionNegocio equipobo = new EquipodeMedicionNegocio();
            List<EquipodeMedicion> equip = equipobo.consultarEquiposdeMedicion(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            List<SelectListItem> equipo = new List<SelectListItem>();

            foreach (EquipodeMedicion equi in equip)
            {
                equipo.Add(new SelectListItem() { Selected = false, Text = equi.Nombre, Value = equi.Identificador.ToString() });
            }
            ViewData.Model = equipo;
            return View();
        }

        public ActionResult proyectos()
        {

            ProyectoNegocio proyectobo = new ProyectoNegocio();
            List<Proyecto> proyec = proyectobo.ConsultarProyectos(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            List<SelectListItem> proyect = new List<SelectListItem>();

            foreach (Proyecto proye in proyec)
            {
                proyect.Add(new SelectListItem() { Selected = false, Text = proye.Nombre, Value = proye.Identificador.ToString() });
            }
            ViewData.Model = proyect;
            return View();
        }

        public ActionResult tipodemuestra()
        {
            TipodeMuestraNegocio muestrabo = new TipodeMuestraNegocio();
            List<TipodeMuestra> muest = muestrabo.consultarTiposdeMuestra(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            List<SelectListItem> muestrass = new List<SelectListItem>();

            foreach (TipodeMuestra muestre in muest)
            {
                muestrass.Add(new SelectListItem() { Selected = false, Text = muestre.Nombre, Value = muestre.Identificador.ToString() });

            }

            ViewData.Model = muestrass;
            return View();

        }

        [HttpGet]
        public JsonResult ObtenerMuestrasPorVariables(string idFiltro)
        {
            FiltroModelo filtro = new FiltroModelo();

            filtro.Latitud = "1.869061";
            filtro.Longitud = "-76.325455";

            String[] Variables = idFiltro.Split(',');
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;

            List<Muestra> muestras = new List<Muestra>();
            MuestraNegocio muestrabo = new MuestraNegocio();
            muestras = muestrabo.ConsultarPorvariables(Variables, cdc, 10);

            foreach (Muestra muestra in muestras)
            {
                if (!filtro.Lugares.Exists(l => l.Identificador == muestra.Iddelugar))
                {
                    LugarNegocio lugarBuscado = new LugarNegocio();
                    Lugar nuevoLugar = new Lugar();
                    nuevoLugar = lugarBuscado.ConsultarPorIdentificador(muestra.Iddelugar, cdc);
                    TipodeLugarNegocio tipodeLugarBuscado = new TipodeLugarNegocio();

                    LugarFModelo lugarTemporal = new LugarFModelo();

                    lugarTemporal.Identificador = nuevoLugar.Identificador.Value;
                    lugarTemporal.Latitud = nuevoLugar.Latituddecimal;
                    lugarTemporal.Longitud = nuevoLugar.Longituddecimal;
                    lugarTemporal.Nombre = nuevoLugar.Nombre;
                    lugarTemporal.Foto = nuevoLugar.Foto;
                    lugarTemporal.Descripcion = nuevoLugar.Descripcion;
                    lugarTemporal.Tipo = ((TipodeLugar)tipodeLugarBuscado.consultarPorIdentificador(nuevoLugar.Idtipodelugar, cdc)).Nombre;
                    //code agragado
                    lugarTemporal.TipolugarFoto = ((TipodeLugar)tipodeLugarBuscado.consultarPorIdentificador(nuevoLugar.Idtipodelugar, cdc)).Foto;

                    TipodeMuestraNegocio tipoABuscar = new TipodeMuestraNegocio();
                    VariableNegocio variableABuscar = new VariableNegocio();
                    UnidaddeMedidaNegocio unidadABuscar = new UnidaddeMedidaNegocio();
                    Variable variable = variableABuscar.ConsultarPorIdentificador(muestra.Iddevariable, cdc);

                    MuestraFModelo muestraTemporal = new MuestraFModelo();
                    muestraTemporal.Tipo = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Nombre;
                    //code agragado
                    muestraTemporal.TipomuestraFoto = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Foto;
                    muestraTemporal.IdVariable = variable.Identificador.Value;
                    muestraTemporal.Variable = variable.Nombre;
                    muestraTemporal.Valor = muestra.Valor;
                    muestraTemporal.Unidad = ((UnidaddeMedida)unidadABuscar.consultarPorIdentificador(variable.Unidad, cdc)).Nombre;
                    muestraTemporal.Fecha = muestra.Fechadecaptura.ToString();

                    lugarTemporal.Muestras.Add(muestraTemporal);

                    filtro.Lugares.Add(lugarTemporal);
                }
                else
                {
                    TipodeMuestraNegocio tipoABuscar = new TipodeMuestraNegocio();
                    VariableNegocio variableABuscar = new VariableNegocio();
                    UnidaddeMedidaNegocio unidadABuscar = new UnidaddeMedidaNegocio();
                    Variable variable = variableABuscar.ConsultarPorIdentificador(muestra.Iddevariable, cdc);

                    MuestraFModelo muestraTemporal = new MuestraFModelo();
                    muestraTemporal.Tipo = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Nombre;
                   //code agregado
                    muestraTemporal.TipomuestraFoto = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Foto;
                    muestraTemporal.IdVariable = variable.Identificador.Value;
                    muestraTemporal.Variable = variable.Nombre;
                    muestraTemporal.Valor = muestra.Valor;
                    muestraTemporal.Unidad = ((UnidaddeMedida)unidadABuscar.consultarPorIdentificador(variable.Unidad, cdc)).Nombre;
                    muestraTemporal.Fecha = muestra.Fechadecaptura.ToString();

                    LugarFModelo lugarTemporal = filtro.Lugares.Single(l => l.Identificador == muestra.Iddelugar);
                    lugarTemporal.Muestras.Add(muestraTemporal);

                }
            }

            return Json(filtro, JsonRequestBehavior.AllowGet);
        }

        public JsonResult ObtenerMuestrasPorEquipos(string idFiltro)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            FiltroModelo filtro = new FiltroModelo();
            filtro.Latitud = "1.869061";
            filtro.Longitud = "-76.325455";

            String[] equipos = idFiltro.Split(',');
            List<Muestra> muestras = new MuestraNegocio().ConsultarPorequipos(equipos, cdc, 10);

            foreach (Muestra muestra in muestras)
            {
                if (!filtro.Lugares.Exists(l => l.Identificador == muestra.Iddelugar))
                {
                    LugarNegocio lugarBuscado = new LugarNegocio();
                    Lugar nuevoLugar = new Lugar();
                    nuevoLugar = lugarBuscado.ConsultarPorIdentificador(muestra.Iddelugar, cdc);
                    TipodeLugarNegocio tipodeLugarBuscado = new TipodeLugarNegocio();

                    LugarFModelo lugarTemporal = new LugarFModelo();

                    lugarTemporal.Identificador = nuevoLugar.Identificador.Value;
                    lugarTemporal.Latitud = nuevoLugar.Latituddecimal;
                    lugarTemporal.Longitud = nuevoLugar.Longituddecimal;
                    lugarTemporal.Nombre = nuevoLugar.Nombre;
                    lugarTemporal.Foto = nuevoLugar.Foto;
                    lugarTemporal.Descripcion = nuevoLugar.Descripcion;
                    lugarTemporal.Tipo = ((TipodeLugar)tipodeLugarBuscado.consultarPorIdentificador(nuevoLugar.Idtipodelugar, cdc)).Nombre;
                    lugarTemporal.TipolugarFoto = ((TipodeLugar)tipodeLugarBuscado.consultarPorIdentificador(nuevoLugar.Idtipodelugar, cdc)).Foto;

                    TipodeMuestraNegocio tipoABuscar = new TipodeMuestraNegocio();
                    VariableNegocio variableABuscar = new VariableNegocio();
                    UnidaddeMedidaNegocio unidadABuscar = new UnidaddeMedidaNegocio();
                    Variable variable = variableABuscar.ConsultarPorIdentificador(muestra.Iddevariable, cdc);

                    MuestraFModelo muestraTemporal = new MuestraFModelo();
                    muestraTemporal.Tipo = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Nombre;
                    muestraTemporal.TipomuestraFoto = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Foto;
                    muestraTemporal.IdVariable = variable.Identificador.Value;
                    muestraTemporal.Variable = variable.Nombre;
                    muestraTemporal.Valor = muestra.Valor;
                    muestraTemporal.Unidad = ((UnidaddeMedida)unidadABuscar.consultarPorIdentificador(variable.Unidad, cdc)).Nombre;
                    muestraTemporal.Fecha = muestra.Fechadecaptura.ToString();

                    lugarTemporal.Muestras.Add(muestraTemporal);
                    filtro.Lugares.Add(lugarTemporal);
                }
                else
                {
                    TipodeMuestraNegocio tipoABuscar = new TipodeMuestraNegocio();
                    VariableNegocio variableABuscar = new VariableNegocio();
                    UnidaddeMedidaNegocio unidadABuscar = new UnidaddeMedidaNegocio();
                    Variable variable = variableABuscar.ConsultarPorIdentificador(muestra.Iddevariable, cdc);

                    MuestraFModelo muestraTemporal = new MuestraFModelo();
                    muestraTemporal.Tipo = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Nombre;
                    muestraTemporal.TipomuestraFoto = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Foto;
                    muestraTemporal.IdVariable = variable.Identificador.Value;
                    muestraTemporal.Variable = variable.Nombre;
                    muestraTemporal.Valor = muestra.Valor;
                    muestraTemporal.Unidad = ((UnidaddeMedida)unidadABuscar.consultarPorIdentificador(variable.Unidad, cdc)).Nombre;
                    muestraTemporal.Fecha = muestra.Fechadecaptura.ToString();

                    LugarFModelo lugarTemporal = filtro.Lugares.Single(l => l.Identificador == muestra.Iddelugar);
                    lugarTemporal.Muestras.Add(muestraTemporal);

                }
            }

            return Json(filtro, JsonRequestBehavior.AllowGet);
        }

        public JsonResult ObtenerMuestrasPorProyectos(string idFiltro)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;

            FiltroModelo filtro = new FiltroModelo();
            filtro.Latitud = "1.892201";
            filtro.Longitud = "-76.090402";

            String[] Proyectos = idFiltro.Split(',');
                        
            List<Muestra> muestras = new MuestraNegocio().ConsultarPorproyectos(Proyectos, cdc, 10);

            foreach (Muestra muestra in muestras)
            {
                if (!filtro.Lugares.Exists(l => l.Identificador == muestra.Iddelugar))
                {
                    LugarNegocio lugarBuscado = new LugarNegocio();
                    Lugar nuevoLugar = new Lugar();
                    nuevoLugar = lugarBuscado.ConsultarPorIdentificador(muestra.Iddelugar, cdc);
                    TipodeLugarNegocio tipodeLugarBuscado = new TipodeLugarNegocio();

                    LugarFModelo lugarTemporal = new LugarFModelo();

                    lugarTemporal.Identificador = nuevoLugar.Identificador.Value;
                    lugarTemporal.Latitud = nuevoLugar.Latituddecimal;
                    lugarTemporal.Longitud = nuevoLugar.Longituddecimal;
                    lugarTemporal.Nombre = nuevoLugar.Nombre;
                    lugarTemporal.Foto = nuevoLugar.Foto;
                    lugarTemporal.Descripcion = nuevoLugar.Descripcion;
                    lugarTemporal.Tipo = ((TipodeLugar)tipodeLugarBuscado.consultarPorIdentificador(nuevoLugar.Idtipodelugar, cdc)).Nombre;
                    lugarTemporal.TipolugarFoto = ((TipodeLugar)tipodeLugarBuscado.consultarPorIdentificador(nuevoLugar.Idtipodelugar, cdc)).Foto;

                    TipodeMuestraNegocio tipoABuscar = new TipodeMuestraNegocio();
                    VariableNegocio variableABuscar = new VariableNegocio();
                    UnidaddeMedidaNegocio unidadABuscar = new UnidaddeMedidaNegocio();
                    Variable variable = variableABuscar.ConsultarPorIdentificador(muestra.Iddevariable, cdc);

                    MuestraFModelo muestraTemporal = new MuestraFModelo();
                    muestraTemporal.Tipo = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Nombre;
                    muestraTemporal.TipomuestraFoto = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Foto;
                    muestraTemporal.IdVariable = variable.Identificador.Value;
                    muestraTemporal.Variable = variable.Nombre;
                    muestraTemporal.Valor = muestra.Valor;
                    muestraTemporal.Unidad = ((UnidaddeMedida)unidadABuscar.consultarPorIdentificador(variable.Unidad, cdc)).Nombre;
                    muestraTemporal.Fecha = muestra.Fechadecaptura.ToString();

                    lugarTemporal.Muestras.Add(muestraTemporal);

                    filtro.Lugares.Add(lugarTemporal);
                }
                else
                {
                    TipodeMuestraNegocio tipoABuscar = new TipodeMuestraNegocio();
                    VariableNegocio variableABuscar = new VariableNegocio();
                    UnidaddeMedidaNegocio unidadABuscar = new UnidaddeMedidaNegocio();
                    Variable variable = variableABuscar.ConsultarPorIdentificador(muestra.Iddevariable, cdc);

                    MuestraFModelo muestraTemporal = new MuestraFModelo();
                    muestraTemporal.Tipo = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Nombre;
                    muestraTemporal.TipomuestraFoto = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Foto;
                    muestraTemporal.IdVariable = variable.Identificador.Value;
                    muestraTemporal.Variable = variable.Nombre;
                    muestraTemporal.Valor = muestra.Valor;
                    muestraTemporal.Unidad = ((UnidaddeMedida)unidadABuscar.consultarPorIdentificador(variable.Unidad, cdc)).Nombre;
                    muestraTemporal.Fecha = muestra.Fechadecaptura.ToString();

                    LugarFModelo lugarTemporal = filtro.Lugares.Single(l => l.Identificador == muestra.Iddelugar);
                    lugarTemporal.Muestras.Add(muestraTemporal);

                }
            }

            return Json(filtro, JsonRequestBehavior.AllowGet);
        }

        public JsonResult ObtenerMuestrasPorTiposdemuestra(string idFiltro)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            FiltroModelo filtro = new FiltroModelo();

            filtro.Latitud = "1.892201";
            filtro.Longitud = "-76.090402";

            String[] tiposdemuestra = idFiltro.Split(',');
            List<Muestra> muestras = new MuestraNegocio().ConsultarPortiposdemuesra(tiposdemuestra, cdc, 10);
            foreach (Muestra muestra in muestras)
            {
                if (!filtro.Lugares.Exists(l => l.Identificador == muestra.Iddelugar))
                {
                    LugarNegocio lugarBuscado = new LugarNegocio();
                    Lugar nuevoLugar = new Lugar();
                    nuevoLugar = lugarBuscado.ConsultarPorIdentificador(muestra.Iddelugar, cdc);
                    TipodeLugarNegocio tipodeLugarBuscado = new TipodeLugarNegocio();

                    LugarFModelo lugarTemporal = new LugarFModelo();

                    lugarTemporal.Identificador = nuevoLugar.Identificador.Value;
                    lugarTemporal.Latitud = nuevoLugar.Latituddecimal;
                    lugarTemporal.Longitud = nuevoLugar.Longituddecimal;
                    lugarTemporal.Nombre = nuevoLugar.Nombre;
                    lugarTemporal.Foto = nuevoLugar.Foto;
                    lugarTemporal.Descripcion = nuevoLugar.Descripcion;
                    lugarTemporal.Tipo = ((TipodeLugar)tipodeLugarBuscado.consultarPorIdentificador(nuevoLugar.Idtipodelugar, cdc)).Nombre;
                    lugarTemporal.TipolugarFoto = ((TipodeLugar)tipodeLugarBuscado.consultarPorIdentificador(nuevoLugar.Idtipodelugar, cdc)).Foto;

                    TipodeMuestraNegocio tipoABuscar = new TipodeMuestraNegocio();
                    VariableNegocio variableABuscar = new VariableNegocio();
                    UnidaddeMedidaNegocio unidadABuscar = new UnidaddeMedidaNegocio();
                    Variable variable = variableABuscar.ConsultarPorIdentificador(muestra.Iddevariable, cdc);

                    MuestraFModelo muestraTemporal = new MuestraFModelo();
                    muestraTemporal.Tipo = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Nombre;
                    muestraTemporal.TipomuestraFoto = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Foto;
                    muestraTemporal.IdVariable = variable.Identificador.Value;
                    muestraTemporal.Variable = variable.Nombre;
                    muestraTemporal.Valor = muestra.Valor;
                    muestraTemporal.Unidad = ((UnidaddeMedida)unidadABuscar.consultarPorIdentificador(variable.Unidad, cdc)).Nombre;
                    muestraTemporal.Fecha = muestra.Fechadecaptura.ToString();

                    lugarTemporal.Muestras.Add(muestraTemporal);

                    filtro.Lugares.Add(lugarTemporal);
                }
                else
                {
                    TipodeMuestraNegocio tipoABuscar = new TipodeMuestraNegocio();
                    VariableNegocio variableABuscar = new VariableNegocio();
                    UnidaddeMedidaNegocio unidadABuscar = new UnidaddeMedidaNegocio();
                    Variable variable = variableABuscar.ConsultarPorIdentificador(muestra.Iddevariable, cdc);

                    MuestraFModelo muestraTemporal = new MuestraFModelo();
                    muestraTemporal.Tipo = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Nombre;
                    muestraTemporal.TipomuestraFoto = ((TipodeMuestra)tipoABuscar.consultarPorIdentificador(muestra.Idtipodemuestra, cdc)).Foto;
                    muestraTemporal.IdVariable = variable.Identificador.Value;
                    muestraTemporal.Variable = variable.Nombre;
                    muestraTemporal.Valor = muestra.Valor;
                    muestraTemporal.Unidad = ((UnidaddeMedida)unidadABuscar.consultarPorIdentificador(variable.Unidad, cdc)).Nombre;
                    muestraTemporal.Fecha = muestra.Fechadecaptura.ToString();

                    LugarFModelo lugarTemporal = filtro.Lugares.Single(l => l.Identificador == muestra.Iddelugar);
                    lugarTemporal.Muestras.Add(muestraTemporal);

                }
            }

            return Json(filtro, JsonRequestBehavior.AllowGet);
        }




    }
}
